package Merlion.SCM.bean;

import Merlion.SCM.entity.MaterialEntity;
import Merlion.SCM.entity.ProductEntity;
import Merlion.util.state.InventoryState;
import java.util.List;
import javax.ejb.Remote;

@Remote
public interface InventoryItemsBeanRemote {

    boolean createMaterial(String name, String description, int leadTime, int shelfLife, int lotSize, String lotSizeUnit);

    boolean createProduct(String name, String description, int shelfLife, double caseWeight, double basePrice, int productionRate);

    boolean deleteMaterial(Long id);

    boolean deleteProduct(Long id);

    boolean updateMaterial(Long id, String name, String description, int inHandQty, int committedQty, int leadTime, int shelfLife, int lotSize, String lotSizeUnit);

    boolean updateProduct(Long id, String name, String description, 
            int shelfLife, double caseWeight, double basePrice, 
            double limitPrice, double listPrirce, int productionRate);

    List<InventoryState> viewMaterials();

    List<InventoryState> viewProducts();

    public ProductEntity searchProduct(Long id);

    public MaterialEntity searchMaterial(Long id);

    public void setPriceBook(List<Merlion.CRM.entity.PricebookEntity> pricebook, Long productId);

    public Long createProduct2(String name, String description, int shelfLife, double caseWeight, double basePrice, int productionRate, double listPrice, double limitPrice);

    public Long searchMaterialId(String name);

    public Long searchProductId(String name);

    public long addWarehouse(java.lang.String name, int capacity, java.lang.String street, java.lang.String city, java.lang.String country, java.lang.String postcode);

    public void editWarehouse(java.lang.Long id, java.lang.String name, java.lang.String street, java.lang.String city, java.lang.String country, java.lang.String postcode);

    public void deleteWarehouse(java.lang.Long id);

    public java.util.List<Merlion.util.state.WarehouseState> viewWarehouse();
}

